package com.wechat.robot;

import java.util.concurrent.CompletableFuture;

import com.swak.annotation.Flux;
import com.wechat.command.Command;
import com.wechat.command.CommandResult;
import com.wechat.network.NetworkChannel;

/**
 * 小蜜 - 机器人
 * 
 * 1. Flux.$nextTick 异步的执行任务，channel 可以输出给远端
 * 
 * 2. 顺序的执行
 * 
 * @author 618lf
 */
@Flux
@com.wechat.annotation.Robot(id = "BeeRobot", name = "小蜜", pool = "BeeRobot")
public class BeeRobot extends Robot {

	/**
	 * 接收消息
	 * 
	 * @param channel -- 通道
	 * @param command -- 命令
	 * @return
	 */
	public CompletableFuture<CommandResult> recv(NetworkChannel channel, Command command) {

		// debug
		if (logger.isDebugEnabled()) {
			logger.debug("[机器人 小蜜] 执行命令, {}", command);
		}

		// 回复
		Command reply = command.reply().dataForTxt("收到");
		if (logger.isDebugEnabled()) {
			logger.debug("[机器人 小蜜] 回复, {}", reply);
		}

		// 这是异步的发送消息
		channel.send(reply);

		// 异步的返回处理结果
		return CompletableFuture.completedFuture(CommandResult.SUCCESS);
	}
}